package com.dys.testjdk13;

/**
 * @className: com.dys.testjdk13.TextBlock
 * @description: 文本块，预览
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/09/08 下午9:26
 */
public class TextBlock2 {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        // 三个"字符的序列需要进行转义至少一个"以避免模仿结束分隔符：
        String code =
                """
                        String text = \"""
                        A text block inside a text block
                        \""";
                        """;
        System.out.println(code);

        // 文本块和字符串可以相互连接
        String code2 = "public void print(Object o) {" +
                """
                            System.out.println(Objects.toString(o));
                        }
                        """;
        System.out.println(code2);

        String code3 = """
                public void print(Object o) {
                    System.out.println(Objects.toString(o));
                }
                """;
        System.out.println(code3);

        String type = "Date";
        String code4 = """
                public void print(""" + type + """
                o) {
                    System.out.println(Objects.toString(o));
                }
                """;
        System.out.println(code4);

        // 使用String :: replace或String :: format
        String code5 = """
                public void print($type o) {
                	System.out.println(Objects.toString(o));
                }
                """.replace("$type", type);

        System.out.println(code5);

        String code6 = String.format("""
                public void print(%s o) {
                	System.out.println(Objects.toString(o));
                }
                """, type);
        System.out.println(code6);

        // 使用String :: formatted，这是一个新方法
        String source = """
                public void print(%s object) {
                	System.out.println(Objects.toString(object));
                }
                """.formatted(type);
        System.out.println(source);
    }


}
